sybase IQ
Sybase公司推出的特别为数据仓库设计的关系型数据库
Sybase IQ是Sybase公司推出的特别为数据仓库设计的关系型数据库,IQ的架构与大多数关系型数据库不同,特别的设计用以支持大量并发用户的即时查询。
简介
其设计与执行进程优先考虑查询性能,其次是完成批量数据更新的速度。而传统关系型数据库引擎的设计既考虑在线的事务进程又考虑数据仓库(而事实上,往往更多的关注事务进程)。
列存储
IQ以列存储数据,而不是行——这与其他所有关系型数据库引擎广泛使用的存储方法方向相反。在其他关系型数据库内核中,数据库的一张表典型的表示为一条数据库页链,每一数据页中有一行或多行数据记录。在数据仓库应用中,从查询性能的观点出发,这种存储方式是所有可能的数据存储方式中最不可取的。在IQ中,每张表是一组相互独立的页链的集合,每一页链代表表中的一列。所以有100 列的表将有100 条相互独立的页链,每一列都有一条页链与之对应,而不是象其他数据库引擎,一张表对应一条页链。列存储所固有的优越性在于:大多数数据仓库应用的查询只关心表中所有列的一个很小的子集,从而可以以很少的磁盘I/O得到查询结果。现在考虑这样一个例子,假设我们要得到所有生日在七月份的客户的名字和电子邮件地址
在一个典型的OLTP数据库引擎中,查询优化器将根据返回行的百分比(如1/12,在本例中,假设各月的生日都基本平均)来决定是否值得在该列上使用索引。因此,典型的数据库引擎对该查询可能会做全表的扫描。为了对扫描的成本做一估算,我们假设每个客户的行记录为3200个字节,共有1000万个条记录。因此,表扫描必须读取320亿个字节的数据。
IQ数据库引擎可以只读取查询所需的列。在本例中,有三个相关的列:全名、电子邮件地址和出生日期。假设全名为25个字节,电子邮件地址为25个字节,出生日期为4个字节(日期以二进制做内部编码)。那么IQ 只需要读取5400万个字节的数据——大约减少了59倍!
数据压缩
传统的数据库引擎不能以一种通用的方式进行数据压缩,主要是由于存在以下三个问题:
1. 第一个问题是其按行存储的数据存储方式不利于压缩。这是因为数据(大多为二进制数据)在以这种方式存储时重复并不多。我们发现,按行存储的数据,最多能有5-10%的压缩比例;
2. 第二个问题是对于许多的2K 和4K 的二进制数据的页来说,为压缩和解压缩而增加的开销太大;
3. 第三个问题是在OLTP 环境中,大量读取和更新混杂在一起。每一次更新需要进行压缩操作,而读取只需解压缩操作,大多数的数据压缩算法在压缩时比解压缩时慢4 倍。这一开销将明显降低OLTP 数据库引擎的事务处理效率而使得数据压缩的代价昂贵到几乎不能忍受。
数据仓库应用中,数据压缩可以用小得多的代价换取更大好处。其中包括减少对于存储量的要求;增大数据吞吐量,这相当于减少查询响应时间。
Sybase IQ使用了数据压缩。这是由于数据按列存储,相邻的字段值具有相同的数据类型,其二进制值的范围通常也要小得多,所以压缩更容易,压缩比更高。Sybase IQ 对列存储的数据通常能得到大于50%的压缩。更大的压缩比例,加上大页面I/O,使得Sybase IQ 在获得优良的查询性能的同时,减少了对存储空间的需求。
优势
描述了IQ独特的技术特征所带来的一些关键的应用效果。
查询效果—瞬间响应
IQ通过列存储、革命性的位图索引方法以及智能的动态访问技术实现了快速的查询响应速度,比传统的数据库查询速度提高10-1000倍。这主要表现在如下几个方面:
减少磁盘I/O
Sybase IQ通过独特的列存储,索引与压缩技术,大大减少了查询中的磁盘I/O次数,其杰出的磁盘I/O效果带来了更快速的查询反应,更高的吞吐量和更低的成本。并行列处理IQ支持列向量的并行处理,这样,在查询中,大量的列向量将被并行扫描,从而达到显著降低响应时间的目的。 智能优化IQ允许在每个列上建立多个索引,IQ查询优化器在不同的使用情况下为查询选择不同的索引。提高Cache命中率大多数传统的关系型数据库执行决策支持类型的查询时会进行表扫描表扫描使Cache 命中率降低。列存储方式使Cache命中率大大提高,查询响应加快。
IQ 并行结构对多用户查询的性能影响
大多数传统数据库采用的并行表扫描方法在一个大型SMP上只有一个用户的情况下,效果是最好的,但在多用户查询环境中的性能会大打折扣。原因是现在的大多数SMP 系统只能同时支持一至两个大型的并行表扫描,如果扫描数量增加,不是CPU 资源不够,就是耗尽了I/O 总线的带宽。每一个表的扫描同时也使数据库缓冲完全失效,因为大多数大型数据仓库应用的表扫描都远大于物理缓冲区的存储能力。IQ独特的并行结构可以在大量的并发查询情况下提供优秀的查询性能。
存储效果—节约存储成本
智能压缩技术,与精巧的索引结构和列存储结合,IQ比其他数据库引擎拥有更好的存储效果。这将获得更低的存储成本与更高的查询性能(因为系统仅需很少的磁盘I/O读取或写入任何给定的数据库块)。
在传统的数据库中,为提高查询性能所建的索引占用的磁盘空间往往需要比数据本身需要的磁盘空间多出3-10倍。而Sybase IQ 存储数据所占用的磁盘空间通常只是原数据文件的40%-60%,是传统数据库所占用空间的几分之一。
数据加载—更高效率
数据加载,包括向一个现有的数据仓库中增加数据,其加载效率大大高于传统的数据库。这是因为IQ的列存储、列并行处理与索引技术,为快速批量数据加载时提供了强大的技术保证。
如果在数据加载时考虑索引的增量式加载,大多数传统的关系型数据库在数据的增量式加载方面都存在严重的问题。这就是说,如果你一次装入了100GB 的原始数据并在其上创建了索引,再在此基础上增加100MB 或几个GB 的数据都会非常非常慢,以至于如果先删除所有的索引,再装入增加的数据,然后重新对整个数据库创建索引反而会快一点。
Sybase IQ 在装入第二个100MB 或100GB 的时候的速度几乎与装入第一批数据一样快。这就给最终用户带来的更大的灵活性。Sybase IQ 使得索引的开销大大降低,并提供了一个新的开发环境,在这样的开发环境中,索引的使用可以比过去任何时候更充分。
可扩展性
Sybase IQ的设计允许数据仓库从基础开始扩展,从很小扩展到非常巨大的规模。这一点已经完全被验证,(详细情况请参考全球最大的数据仓库——企业数据仓库参考架构一节)以及基准测试报告。
可扩展性对Sybase IQ而言,举重若轻,你可以从一个小型的数据仓库开始,扩展到大型的数据仓库。也可以从大型开始扩展到超大型的数据仓库。
大幅降低总拥有成本
正如上面所述,Sybase IQ大大节约了数据存储成本,而且通过其强大的可扩展性为企业提供了灵活的选择。
另外,IQ比传统的数据库更容易维护,不需要经常的人工调优,简单的扩展实现,快速的部署时间等等都大幅降低了企业开发数据仓库的总拥有成本。
参考资料
最新修订时间:2022-05-25 11:51
目录
概述
简介
参考资料